package models

import "github.com/astaxie/beego/orm"

// 定义字段,对应数据库中的
type User struct {
	Id int
	Name string
	AddTime int64
	Status int
	Mobile string
	Avatar string
}
// 初始化
func init()  {
	orm.RegisterModel(new(User))
}
// 获取用户信息
func UserInfo(id int)(User,error)  {
	// 定义获取错误的变量
	var  (
		err error
	)
	// 用orm必须要新建NewOrm
	o:=orm.NewOrm()
	// 获取User Id，然后定义好后，需要在controllers下去调用这个方法
	user:=User{Id: id}
	err=o.Read(&user)
	return user,err
}
// 保存用户的信息
func Save(name string,mobile string,avatar string)error  {
	var(
		err error
		user User
	)
	o:=orm.NewOrm()
	user.Name=name
	user.Mobile=mobile
	user.Avatar=avatar
	user.Status=0
	// 我们用Insert来实现保存
	_,err=o.Insert(&user)
	return err
}
// 更新用户名
func UpdateUsername(id int,name string) error {
	var  (
		user User
		err error
	) 
	o:=orm.NewOrm()
	user=User{Id: id}
	if o.Read(&user)==nil {
		user.Name=name
	}
	_,err=o.Update(&user)
	return err
}
// 删除用户
func Delete(id int)error  {
	var  (
		user User
		err error
	)
	o:=orm.NewOrm()
	user=User{Id: id}
	_,err=o.Delete(&user)
	return err
}
// 获取用户的列表
func List() ([]User,error)  {
	var(
		users []User
		err error
	)
	o:=orm.NewOrm()
	// 开始数据库的操作
	// 获取操作数据库的表名
	qs:=o.QueryTable("user")
	// 筛选大于id大于10的数据库数据
	qs=qs.Filter("id__gt",10)
	// 返回两条数据
	qs=qs.Limit(2)
	// 倒叙,但是很诡异，需要加-
	qs=qs.OrderBy("-id")
	// 定义返回的字段信息
	qs.All(&users,"Id","Name")
	return users,err
}
